package br.com.comprasPublicas.entity;

import java.io.Serializable;
import java.util.Date;
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Temporal;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
import org.hibernate.annotations.NamedNativeQueries;
import org.hibernate.annotations.NamedNativeQuery;

/**
 *
 * @author helsen_rafael
 * @since 11/01/11
 */
@Entity
@NamedNativeQueries({
        @NamedNativeQuery(name="order_by_id_cotacao", query="SELECT * FROM cotacao ORDER BY id_cotacao",resultClass=Cotacao.class),
        @NamedNativeQuery(name="select_max_id_cotacao", query="SELECT * FROM cotacao",resultClass=Cotacao.class)
        })
public class Cotacao implements Serializable  {
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private int id_cotacao;

    @Temporal(javax.persistence.TemporalType.DATE)
    private Date data_emissao;

    @Temporal(javax.persistence.TemporalType.DATE)
    private Date data_vencimento;

    @Column(name="hora_vencimento")
    private String hora_vencimento;

    @Column(name="valor_total_cotacao")
    private double valor_totalCotacao;

    @Column (name="condicao_pagamento")
    private String condicao_pagamento;

    @Column (name="condicao_entrega")
    private String condicao_entrega;

    @OneToOne(targetEntity=Pedido.class)
    private Pedido pedido;

    @OneToMany (mappedBy="cotacao", fetch=FetchType.LAZY)
    private Set<InclusaoPrecosCotacao> inclusao_precosCotacao;

    @Cascade(CascadeType.ALL)
    
    //Abaixo os Encapsulamentos dos Campos

    public int getId_cotacao() {
        return id_cotacao;
    }

    public void setId_cotacao(int id_cotacao) {
        this.id_cotacao = id_cotacao;
    }

    public Date getData_emissao() {
        return data_emissao;
    }

    
    public void setData_emissao(Date data_emissao) {
        this.data_emissao = data_emissao;
    }

  
    public Date getData_vencimento() {
        return data_vencimento;
    }

  
    public void setData_vencimento(Date data_vencimento) {
        this.data_vencimento = data_vencimento;
    }


    public double getValor_totalCotacao() {
        return valor_totalCotacao;
    }

   
    public void setValor_totalCotacao(double valor_totalCotacao) {
        this.valor_totalCotacao = valor_totalCotacao;
    }

   
    public String getCondicao_pagamento() {
        return condicao_pagamento;
    }

   
    public void setCondicao_pagamento(String condicao_pagamento) {
        this.condicao_pagamento = condicao_pagamento;
    }

    
    public String getCondicao_entrega() {
        return condicao_entrega;
    }

    public void setCondicao_entrega(String condicao_entrega) {
        this.condicao_entrega = condicao_entrega;
    }

    
    public Set<InclusaoPrecosCotacao> getInclusao_precosCotacao() {
        return inclusao_precosCotacao;
    }

  
    public void setInclusao_precosCotacao(Set<InclusaoPrecosCotacao> inclusao_precosCotacao) {
        this.inclusao_precosCotacao = inclusao_precosCotacao;
    }


    public String getHora_vencimento() {
        return hora_vencimento;
    }

   
    public void setHora_vencimento(String hora_vencimento) {
        this.hora_vencimento = hora_vencimento;
    }

   
    public Pedido getPedido() {
        return pedido;
    }

   
    public void setPedido(Pedido pedido) {
        this.pedido = pedido;
    }

}
